package com.xymtop.sqlcater.core.sql.sqlconnecter.entity;


import lombok.Data;

import java.sql.Array;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

//数据库对象
@Data
public class SqlDataBase {
    //数据库名称
    private String name;

    //数据库中的表
    private List<SqlTable> tables = new ArrayList<>();

    //数据库中的视图
    private List<SqlView> views = new ArrayList<>();

    //数据库中的函数
    private List<SqlFunction> functions = new ArrayList<>();

    //数据库的大小
    private float size;


    //初始化数据库
    public void init(SqlConnecter sqlConnecter) throws SQLException {
        if(sqlConnecter!=null){
            ResultSet resultSet = sqlConnecter.query(QuerySql.QUERYALLTABLES(name));

            while (resultSet.next()){

                //数据库基本信息

                //初始化数据表

                SqlTable sqlTable = new SqlTable();
                //表名
                String tableName = resultSet.getString("TABLE_NAME");
                sqlTable.setName(tableName);

                //表备注
                String tableComment = resultSet.getString("TABLE_COMMENT");
                sqlTable.setComment(tableComment);

                //初始话数据表数据
                sqlTable.init(sqlConnecter);

                //设置数据库
                sqlTable.setDatabase(name);
                this.tables.add(sqlTable);


            }


            //视图
            resultSet = sqlConnecter.query(QuerySql.QUERYALLVIEWS(name));

            while (resultSet.next()){

                //初始化数据视图
                SqlView sqlView = new SqlView();

                //视图名称
                sqlView.setName(resultSet.getString("TABLE_NAME"));

                //视图备注
                sqlView.setComment(resultSet.getString("TABLE_COMMENT"));

                //初始化视图数据
                sqlView.init(sqlConnecter);

                sqlView.setDatabase(name);
                this.views.add(sqlView);
            }

        }
    }


}
